<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>
    整个代码的执行流程是： setTimeout推到宏任务队列 然后遇到promise立刻执行，输出2。遇到promise.then推到微任务队列。继续往下，输出4。
    至此，当前主线程中的同步任务执行完毕，读取微任务队列中的promise.then，输出3 浏览器渲染之后继续执行宏任务setTimeout，输出1
</p>
<script>
    setTimeout(function () {
        console.log('1')
    });

    new Promise(function (resolve) {
        console.log('2');
        resolve();
    }).then(function () {
        console.log('3')
    });

    console.log('4');
</script>
</body>
</html>
